/////////////////////////////////////////////////////////////////////////
//
// Amuse Engine - application
// Copyright (c) 2014.  All Rights Reserved
//
// File:		AEWindowManager.h
// Author:		Gianluca Belardelli
// Date:		27/09/2013
//
/////////////////////////////////////////////////////////////////////////
#ifndef _AEWINDOWMANAGER_H_
#define _AEWINDOWMANAGER_H_

class AE_DLLIMPEXP AEWindowManager
{
	AE_DECLARE_SINGLETON( AEWindowManager );

// Methods
private:
	~AEWindowManager( void );

public:
	void Initialize( void );

	IAEWindow *CreateNewWindow( const char *lpTitle, AEINT32 nXPos, AEINT32 nYPos, AEINT32 nWidth, AEINT32 nHeight, AEUINT32 uiFlags );
	IAEWindow *CreateNewWindow( AEEngineConfig *lpConfig, AEUINT32 uiFlags );

	IAEWindow *CreateWindowFromExistingHandle( AEWINDOWHANDLE wndHandle );
	IAEWindow *NewEmptyWindow( void );

	void AddWindow( IAEWindow *lpWindow );
	void DestroyWindow( IAEWindow *lpWindow );

	void DestroyAllWindows( void );

	//bool DoStepOnSALMessageLoop();

	IAEWindow *GetWindow( AEWINDOWHANDLE wndHandle ) const;
	IAEWindow *GetWindow( const wchar_t *lpwcTitle ) const;

	AEUINT32 WindowCount( void ) const;
};

#endif // _AEWINDOWMANAGER_H_
